/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.cip.esymons.tesoreria.bc;

import java.util.Date;
import org.cip.esymons.general.be.Solicitante;
import org.cip.esymons.tesoreria.adapters.VerDeuda;
import org.cip.esymons.tesoreria.be.EnumTipoDeuda;
import org.cip.esymons.tesoreria.be.MovimientoCuenta;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import org.cip.esymons.colegiatura.be.Colegiado;
import org.cip.esymons.tesoreria.adapters.AporteXCajaMutual;
import org.cip.esymons.tesoreria.adapters.AporteXConsejoNacional;
import org.cip.esymons.tesoreria.adapters.CajaMutualXColegiado;
import org.cip.esymons.tesoreria.adapters.DeudaPorNumeroCuotas;
import org.cip.esymons.tesoreria.adapters.DeudaPorTipo;
import org.cip.esymons.tesoreria.be.CuentaIngreso;
import org.cip.esymons.tesoreria.be.DocumentoPago;
import org.cip.esymons.tesoreria.be.EnumCondicionalesNumericos;
import org.cip.esymons.tesoreria.be.ProcesoElectoral;
import org.cip.esymons.tesoreria.be.TipoMoneda;
import org.cip.esymons.tramite.be.TipoDocumento;
import org.cip.esymons.tramite.be.Transaccion;

/**
 *
 * @author Ingrid Capunay
 */
public class MovimientoCuentaDelegate {

    private MovimientoCuentaFacadeLocal local;

    public List<MovimientoCuenta> deudaxTipo(Solicitante solicitante, EnumTipoDeuda enumTipoDeuda) {
        return local.deudaxTipo(solicitante, enumTipoDeuda);
    }

    public MovimientoCuentaDelegate() {
        local = lookupMovimientoCuentaFacade();
    }

    public void create(MovimientoCuenta movimientoCuenta) {
        local.create(movimientoCuenta);
    }

    public void edit(MovimientoCuenta movimientoCuenta) {
        local.edit(movimientoCuenta);
    }

    public void remove(MovimientoCuenta movimientoCuenta) {
        local.remove(movimientoCuenta);
    }

    public MovimientoCuenta find(Object id) {
        return local.find(id);
    }

    public List<MovimientoCuenta> findAll() {
        return local.findAll();
    }

    public VerDeuda mostrarDeudaTotalCuotasSolicitante(Long codigo, int tipo, Date fecha) {
        return local.mostrarDeudaTotalCuotasSolicitante(codigo, tipo, fecha);
    }

    public void crearDeudaPorMultasDeColegiados(List<Colegiado> lista, ProcesoElectoral procesoElectoral) throws Exception {
        local.crearDeudaPorMultasDeColegiados(lista, procesoElectoral);
    }

    public void crearDeudaPorMultasDeMiembrosMesa(List<Colegiado> lista, ProcesoElectoral procesoElectoral) throws Exception{
        local.crearDeudaPorMultasDeMiembrosMesa(lista, procesoElectoral);
    }

    public List<DeudaPorTipo> mostrarDeudaXTipoDeColegiadosMorosos(EnumCondicionalesNumericos condicion, Double valor1, Double valor2) {
        return local.mostrarDeudaXTipoDeColegiadosMorosos(condicion, valor1, valor2);
    }

    public List<DeudaPorNumeroCuotas> mostrarDeudaXNumCuotasVencidasDeColegiadosMorosos(Date fechaMorosidad, EnumCondicionalesNumericos condicion2, Integer numCuotasVencidas1, Integer numCuotasVencidas2) {
        return local.mostrarDeudaXNumCuotasVencidasDeColegiadosMorosos(fechaMorosidad, condicion2, numCuotasVencidas1, numCuotasVencidas2);
    }

    public List<Colegiado> obtenerColegiadosConDeuda() {
        return local.obtenerColegiadosConDeuda();
    }

    public void anularDeuda(Solicitante solicitante, CuentaIngreso cuentaIngreso, Date fecIni, Date fecFin){
        local.anularDeuda(solicitante, cuentaIngreso, fecIni, fecFin);
    }

    public DocumentoPago crearDeudaTramite(List<CuentaIngreso> lista, Solicitante solicitante, Date fecha, Transaccion trans,TipoDocumento tipoDocumento, Double deuda,TipoMoneda tm){
        return local.crearDeudaTramite(lista, solicitante, fecha, trans, tipoDocumento, deuda,tm);
    }

    public List<AporteXCajaMutual> mostrarAporteColegiadosXCajaMutual(Integer anioPago, Integer mesPago){
        return local.mostrarAporteColegiadosXCajaMutual(anioPago, mesPago);
    }

    public List<AporteXConsejoNacional> aportesColegiadosXConsejoNacional(Integer anioPagoCN, Integer mesPagoCN){
        return local.aportesColegiadosXConsejoNacional(anioPagoCN, mesPagoCN);
    }

    public List<CajaMutualXColegiado> cajaMutualXColegiado(String numeroCip){
        return local.cajaMutualXColegiado(numeroCip);
    }


    private MovimientoCuentaFacadeLocal lookupMovimientoCuentaFacade() {
        try {
            Context c = new InitialContext();
            return (MovimientoCuentaFacadeLocal) c.lookup("java:comp/env/MovimientoCuentaFacade");
        } catch (NamingException ne) {
            Logger.getLogger(getClass().getName()).log(Level.SEVERE, "exception caught", ne);
            throw new RuntimeException(ne);
        }
    }
}
